package es.gesfutbol.domini.implementacio;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import es.gesfutbol.domini.IUsuariRegistrat;

@Entity
@Table(name="usuari_registrat")
public class UsuariRegistrat implements IUsuariRegistrat {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -927748456551582860L;

	private Long idUsuari;
	
	private String nom;
	
	private String alies;
	
	private String email;
	
	private String contrasenya;
	
	private Date dataNaixement;
	
	private Set<Penyista> penyistes;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idUsuari", nullable=false, precision = 10, scale=0)
	public Long getIdUsuari() {
		return idUsuari;
	}

	public void setIdUsuari(Long idUsuari) {
		this.idUsuari = idUsuari;
	}

	@Column(name = "nom", length = 45, nullable=false)
	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	@Column(name = "alies", length = 45, nullable=false)
	public String getAlies() {
		return alies;
	}

	public void setAlies(String alies) {
		this.alies = alies;
	}

	@Column(name = "email", length = 45, nullable=false)
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	
	@Column(name = "contrasenya", length = 45, nullable=false)
	public String getContrasenya() {
		return contrasenya;
	}

	public void setContrasenya(String contrasenya) {
		this.contrasenya = contrasenya;
	}
	
	@Temporal(TemporalType.DATE)
	@Column(name="dataNaixement", nullable=false, length=11)
	public Date getDataNaixement() {
		return dataNaixement;
	}

	public void setDataNaixement(Date dataNaixement) {
		this.dataNaixement = dataNaixement;
	}

	@OneToMany(fetch=FetchType.LAZY, mappedBy="usuari", cascade=CascadeType.ALL)
	public Set<Penyista> getPenyistes() {
		return penyistes;
	}

	public void setPenyistes(Set<Penyista> penyistes) {
		this.penyistes = penyistes;
	}
}